ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Инженеру
Чек-лист самопроверки
- Понимаете ли вы, что такое «достижимый объект» и как GC определяет достижимость?
- Можете ли вы объяснить, почему утечка памяти возможна даже при наличии GC?
- Знаете ли вы, какие объекты считаются «корнями» в .NET, Java и Python?
- Умеете ли вы отличить утечку памяти от просто высокого потребления памяти?
- Понимаете ли вы разницу между подсчётом ссылок и трассировкой?
- Можете ли вы описать поколенческую гипотезу и её роль в GC?
- Знаете ли вы, какие объекты попадают в Large Object Heap (.NET)?
- Умеете ли вы включить Server GC в .NET-приложении?
- Понимаете ли вы, чем Workstation GC отличается от Server GC?
- Знаете ли вы, как включить фоновую сборку в .NET?
- Можете ли вы объяснить, что такое stop-the-world пауза?
- Умеете ли вы установить режим низкой задержки в .NET?
- Знаете ли вы, как принудительно дефрагментировать LOH?
- Понимаете ли вы, зачем нужен
GC.RegisterForFullGCNotification?
- Умеете ли вы правильно использовать
IDisposable и using?
- Знаете ли вы, какие сборщики мусора доступны в OpenJDK?
- Можете ли вы объяснить, почему CMS был удалён из JDK?
- Понимаете ли вы, как G1 делит кучу на регионы?
- Знаете ли вы, как задать целевую длительность паузы в G1?
- Умеете ли вы запустить приложение с ZGC?
- Понимаете ли вы, что такое colored pointers и как они работают в ZGC?
- Знаете ли вы, как Shenandoah перемещает объекты без остановки приложения?
- Умеете ли вы интерпретировать GC-логи Java?
- Понимаете ли вы, что такое allocation failure и как его избежать?
- Знаете ли вы, как работает JVM ergonomics?
- Умеете ли вы создать heap dump и проанализировать его в Eclipse MAT?
- Понимаете ли вы, почему Serial GC не подходит для серверных приложений?
- Знаете ли вы, как Parallel GC максимизирует throughput?
- Умеете ли вы настроить размер кучи в Java?
- Понимаете ли вы, что такое root scanning и почему он требует STW?
- Знаете ли вы, как работает подсчёт ссылок в CPython?
- Умеете ли вы объяснить, почему подсчёт ссылок не справляется с циклами?
- Понимаете ли вы, какие объекты отслеживаются модулем
gc?
- Знаете ли вы, как настроить пороги сборки в Python?
- Умеете ли вы вручную запустить сборку в Python?
- Понимаете ли вы, почему
gc.disable() может быть опасен?
- Знаете ли вы, как включить отладочный вывод GC в Python?
- Умеете ли вы найти цепочку удерживающих ссылок в Python?
- Понимаете ли вы, что такое arena allocator и pymalloc?
- Знаете ли вы, почему фрагментация памяти — проблема в долгоживущих Python-процессах?
- Умеете ли вы профилировать память в .NET с помощью PerfView?
- Понимаете ли вы, как использовать dotnet-counters для мониторинга GC?
- Знаете ли вы, как анализировать ETW-события GC?
- Умеете ли вы использовать JFR для записи событий GC в Java?
- Понимаете ли вы, как работает load barrier в ZGC и Shenandoah?
- Знаете ли вы, как избежать утечки памяти при работе с обработчиками событий?
- Умеете ли вы правильно удалять подписки на события в C#?
- Понимаете ли вы, почему статические коллекции — частый источник утечек?
- Знаете ли вы, как использовать пул объектов вместо постоянного создания/удаления?
- Умеете ли вы проектировать систему так, чтобы минимизировать давление на GC?